package dao;

import model.UsuarioGrupo;
import org.hibernate.Session;
import util.CustomException;

/**
 *
 * @author rodolpho
 */
public class UsuarioGrupoDAO extends GenericEntityDAO<UsuarioGrupo, Long> {

    public void excluirPermissoes(Session session, UsuarioGrupo usuarioGrupo) throws CustomException {
        try {
            StringBuilder sbHQL = new StringBuilder();
            sbHQL.append(" DELETE ");
            sbHQL.append("   FROM UsuarioGrupoAcao uga");
            sbHQL.append("  WHERE uga.usuarioGrupo.ugrCodigo = :ugrCodigo");
            session.createQuery(sbHQL.toString()).setLong("ugrCodigo", usuarioGrupo.getUgrCodigo()).executeUpdate();
        } catch (Exception e) {
            throw new CustomException("Falha ao excluir permissões do grupo " + usuarioGrupo.getUgrNome(), e);
        }
    }

    public boolean possuiUsuarios(Session session, long ugrCodigo) throws CustomException {
        try {
            StringBuilder sbHQL = new StringBuilder();
            sbHQL.append(" SELECT COUNT(*) ");
            sbHQL.append("   FROM Usuario usu");
            sbHQL.append("  WHERE usu.usuarioGrupo.ugrCodigo = :ugrCodigo");
            return (((Number) session.createQuery(sbHQL.toString()).setLong("ugrCodigo", ugrCodigo).uniqueResult()).intValue() > 0);
        } catch (Exception e) {
            throw new CustomException("Falha ao consultar se o grupo possui usuários", e);
        }
    }
}
